Currently, circuit designers design integrated circuits to perform specific functions using one of several methodologies. An example of a design methodology is schematic capture. According to this methodology, a designer uses a computer to create a graphical description of the circuit with the desired functionality. For example, the circuit description could consist of a picture of the circuit at the transistor level. The description could also consist of a circuit diagram showing digital logic gates. Whatever the exact form of the graphical circuit description, software tools convert the graphical circuit description to another format representing the circuit layout for a semiconductor device. If the semiconductor device that is to implement the design circuit is a programmable device, the graphical circuit description is converted to a netlist and then to a serial bit stream which is downloaded to the programmable device.
In another design methodology, a circuit designer uses a hardware description language to write a text description of the circuit. Hardware description language files are behavioral descriptions of circuits and subcircuits including connection information. Hardware description language files can be converted to schematic form if desired, or converted directly to layouts or netlists. One example of a popular hardware description language is very large scale integration hardware description language (VHDL).
Regardless of what circuit design methodology is used, circuit designers must design for a specific integrated circuit architecture. Typically, circuit building blocks are provided by the vendor of the integrated circuit or by a third party. The building blocks are compatible with the methodology being used. For instance, they may be small schematic circuit or hardware description language files. Such building blocks usually include flip-flops, logic gates, and small common circuits made up of these low level elements. For example, small common circuits available as building blocks include various counters and adders. Libraries of such building blocks are provided so that circuit designers do not need to recreate common circuits each time they begin a design.
After a design performing a particular function has been completed for implementation on a particular integrated circuit architecture, extensive simulation and redesign is usually still required. This is because even though a particular design may be logically correct, it is not possible to predict its exact performance until it is actually implemented on the hardware. Considerations like physical area, resources available and timing behavior may make a circuit nonfunctional as initially designed. For this reason, the circuit designer typically uses software capable of simulating the performance of the circuit as designed on a particular integrated circuit architecture. Many errors in the function of the circuit will appear during simulation. As errors are identified, it is necessary to redesign the circuit, sometimes extensively, in order to eliminate them.
It would be desirable for a circuit designer to have available a library of system-level building blocks or components already designed to implement particular functions on a particular integrated circuit architecture and to meet specified performance requirements. As will be shown, the present invention allows a circuit designer to choose among hardware description language modules that perform particular high level system functions. The present invention allows the circuit designer to specify performance requirements for the functional module. A functional module is then generated that performs the specified function within the specified performance requirements and is targeted for a specified integrated circuit architecture. Thus, the present invention eliminates a great deal of design effort and also eliminates extensive circuit testing.